﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EstacionDePoder.Codigo;
using BLLEP.Funcionalidad;
using BLLEP;

namespace EstacionDePoder.Tienda
{
    public partial class Carrito : FormGenerico
    {
        private void CargarProductos()
        {
            CarritoManager manager = new CarritoManager(Context);
            gvItems.DataSource = manager.TraerItems();
            gvItems.DataBind();

            SetearVisibilidad(btnGuardarCambios, gvItems.Rows.Count > 0);
            SetearVisibilidad(btnSeguirComprando, gvItems.Rows.Count > 0);
            SetearVisibilidad(btnContinuar, gvItems.Rows.Count > 0);
        }

        private void ActualizarCambios()
        {
            CarritoManager manager = new CarritoManager(Context);

            foreach (GridViewRow fila in gvItems.Rows)
            {
                TextBox txtCantidad = fila.FindControl("txtCantidad") as TextBox;
                ImageButton imgRemover = fila.FindControl("imgRemover") as ImageButton;

                if (imgRemover != null && txtCantidad != null)
                {
                    int ID = 0;
                    int cantidad = 0;

                    if (!int.TryParse(imgRemover.CommandArgument, out ID))
                        continue;

                    if (int.TryParse(txtCantidad.Text, out cantidad))
                        manager.ActualizarCantidad(ID, cantidad);
                    else
                        manager.RemoverItem(ID);
                }
            }
        }


        protected void Page_Load(object sender, EventArgs e)
        {
            ActualizarCambios();
            CargarProductos();
            CalcularTotal(lblTotalInferior);
            lblTotalArio.Text = lblTotalInferior.Text;
        }

        protected void imgRemover_Click(object sender, EventArgs e)
        {
            ImageButton btn = sender as ImageButton;
            CarritoManager manager = new CarritoManager(Context);
            manager.RemoverItem(int.Parse(btn.CommandArgument));
            CargarProductos();
            CalcularTotal(lblTotalInferior);
            lblTotalArio.Text = lblTotalInferior.Text;

            Master master = this.Page.Master as Master;
            master.ActualizarCarrito();
        }

        protected void btnGuardarCambios_Click(object sender, EventArgs e)
        {
            
        }

        protected void btnContinuar_Click(object sender, EventArgs e)
        {
            BLLPedido bllPedido = new BLLPedido();
            EP_Pedido nuevoPedido = new EP_Pedido();

            CarritoManager manager = new CarritoManager(Context);
            List<CarritoItem> items = manager.TraerItems();

            List<EP_DetallePedido> detalles = new List<EP_DetallePedido>();
            foreach (CarritoItem item in items)
            {
                EP_DetallePedido detalle = new EP_DetallePedido();
                detalle.Cantidad = item.Cantidad;
                detalle.Detalle = item.Descripcion;
                detalle.EP_Moneda = new BLLMoneda(bllPedido.Contexto).Traer(item.Moneda);
                detalle.PrecioUnitario = item.Precio;
                detalles.Add(detalle);
            }

            bllPedido.CargarPedido(nuevoPedido, detalles);
            bllPedido.GuardarCambios();
            manager.LimpiarCarrito();

            Response.Redirect("~/Tienda/MisPedidos.aspx");
        }
    }
}